#include <iostream>
#include "headers/Product.h"
#include "headers/Manager.h"
#include "headers/MessageBox.h"
#include "headers/UnderlinePen.h"

using namespace Framework;

int main ()
{
    Manager manager;       
    
    manager.makeRegister("AsterBox", std::make_unique<MessageBox>('*'));
    manager.makeRegister("WavePen", std::make_unique<UnderlinePen>('~'));
    // all objects destroy by OS, should be destried by manager.
    auto msgbox = manager.createClone("AsterBox");
    auto pen = manager.createClone("WavePen");
    
    std::string testContext = "hello world";
    msgbox->use(testContext);
    pen->use(testContext);

    return 0;
}